package ThreadTest.SaleTicket;
/*
java多线程模拟实现12306售票
业务描述
	假设有200张票，用4个线程去订票，不能有两个或者以上的线程订到了
	同一个票（原因就不说了），当最后一张票卖掉的时候结束，再订就抛
	异常提示出票卖完了。
业务分析,要实现以上功能，
	1、需要创建一个车票类，初始化票，卖票的接口saleTicket()
	2、自定义异常的一个类。
	3、创建卖票线程类，在run方法中卖车票。
	4、初始化车票的线程,负责初始化车票,也就是初始化Ticket类中的数组。
	5、创建主方法进行测试。
 */
public class SaleTicketTest {
    public static void main(String[] args) {
        //创建车票类
        Ticket ticket = new Ticket();
        //创建初始化车票线程
        TicketThread ticketThread = new TicketThread(ticket);
        //创建售卖窗口线程
        SaleTicketThread saleTicketThread1 = new SaleTicketThread(ticket);
        saleTicketThread1.setName("售票窗口1：");
        SaleTicketThread saleTicketThread2 = new SaleTicketThread(ticket);
        saleTicketThread2.setName("售票窗口2：");
        SaleTicketThread saleTicketThread3 = new SaleTicketThread(ticket);
        saleTicketThread3.setName("售票窗口3：");
        SaleTicketThread saleTicketThread4 = new SaleTicketThread(ticket);
        saleTicketThread4.setName("售票窗口4：");
        //开始初始化
        ticketThread.start();
        try {
            ticketThread.join();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        saleTicketThread1.start();
        saleTicketThread2.start();
        saleTicketThread3.start();
        saleTicketThread4.start();
    }
}
